package basic;

import java.sql.*;

public class Test {
    public static void main(String[] args) {
        /**
         * 1,加载驱动
         * 2，获取连接
         * 3，根据连接获取操作数据库的工具
         * 4，操作数据库
         * 5，关闭资源
         */

        //连接类
        Connection connection = null;

        //根据连接获取的操作类
        Statement statement = null;

        //结果集
        ResultSet resultSet = null;


        try {
            //1,加载驱动  通过反射去做
            Class.forName("com.mysql.jdbc.Driver");

            //2，获取连接  这一步方法是固定的，但里面的参数是根据实际情况变化的
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/emps", "root", "root");

            //3，根据连接获取操作数据库的工具
            statement = connection.createStatement();


            //4,操作数据库  两类四种操作， 更新语句:增删改  查询语句: 查

            //下面是一个改操作，属于更新语句，把sql语句存储到string类型变量中
            String sql = "UPDATE emp SET sal = 8000 WHERE empno = '7369'";
            //更新操作返回结果是受影响的行数(整形),查询操作返回的是结果集
            int i = statement.executeUpdate(sql);
            System.out.println("受影响的行数为：" + i);

            //查询操作，属于查询语句，存储到一个String类型变量s中
            //调用操作类的executeQuery(s) 方法,返回值是结果集
            String sql2 = "SELECT * FROM emp";
            resultSet = statement.executeQuery(sql2);
            while (resultSet.next()) {
                //System.out.println(resultSet.getInt(1) + " " + resultSet.getString(2) + " " + resultSet.getString(5));
                System.out.println(resultSet.getInt("empno") + " " + resultSet.getString("ename") + " "
                        + resultSet.getDouble("sal"));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
